package wodegua.d24_file_io;

import java.io.*;

/**
 * 不同编码读取出现乱码的问题
 * 如果代码编码和被读取的文本文件的编码是一致的，使用字符流读取文本文件时不会出现乱码!
 * 如果代码编码和被读取的文本文件的编码是不一致的，使用字符流读取文本文件时就会出现乱码!
 *
 * OutputStreamWriter字符输出转换流
 * 作用:可以控制写出去的字符使用什么字符集编码。
 * 解决思路:获取字节输出流，再按照指定的字符集编码将其转换成字符输出流，以后写出去的字符就会用该字符集编码了
 *
 * 构造器
 * public OutputStreamWriter(OutputStream os)   可以把原始的字节输出流，按照代码默认编码转换成字符输出流
 * public outputStreamWriter(OutputStream os，string charset)    可以把原始的字节输出流，按照指定编码转换成字符输出流(重点)
 */
public class d20_IoOutputStreamWriterTest {
    public static void main(String[] args) {
        try (
                Reader fr = new FileReader("helloworld-app/ab.txt");
                BufferedReader bis = new BufferedReader(fr);

                OutputStream os = new FileOutputStream("helloworld-app/ab_gbk.txt");
                Writer osw = new OutputStreamWriter(os,"GBK");
        ) {
            String line;
            while ((line = bis.readLine()) != null) {
                osw.write(line);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
